package com.taotao.sso.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.converter.json.MappingJacksonValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.taotao.common.ExceptionUtil;
import com.taotao.common.TaotaoResult;
import com.taotao.pojo.TbUser;
import com.taotao.sso.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
	@Autowired
	private UserService userService;
	
	@RequestMapping("/check/{param}/{type}")
	@ResponseBody
	public Object checkDate(@PathVariable String param,@PathVariable Integer type,String callback){
		TaotaoResult result=null;
		//校验数据
		if(StringUtils.isBlank(param)){
			result=TaotaoResult.build(400, "校验内容不能为空!");
		}
		if(type==null){
			result=TaotaoResult.build(400, "校验类型不能为空!");
		}
		if(type!=1&&type!=2&&type!=3){
			result=TaotaoResult.build(400, "类型参数不匹配!");
		}
		if(result!=null){
			if(callback!=null){
				MappingJacksonValue mjv=new MappingJacksonValue(result);
				mjv.setJsonpFunction(callback);
				return mjv;
			}else{
				return result;
			}
		}
		//调用服务
		try {
			result= userService.checkDate(param, type);
		} catch (Exception e) {
			result=TaotaoResult.build(500, ExceptionUtil.getStackTrace(e));
		}
		if(callback!=null){
			MappingJacksonValue mjv=new MappingJacksonValue(result);
			mjv.setJsonpFunction(callback);
			return mjv;
		}else{
			return result;
		}
	}
	
	//注册用户信息
	@RequestMapping(value="/register",method=RequestMethod.POST)
	@ResponseBody
	public TaotaoResult createUser(TbUser user){
		
		try {
			TaotaoResult result=userService.createUser(user);
			return result;
		} catch (Exception e) {
			return TaotaoResult.build(500, ExceptionUtil.getStackTrace(e));
		}
	}
	
	//用户登入
	@RequestMapping(value="/login",method=RequestMethod.POST)
	@ResponseBody
	public TaotaoResult userLogin(String username,String password,
			HttpServletRequest request,HttpServletResponse response){
		try {
			TaotaoResult result=userService.userLogin(username, password,request,response);
			return result;
		} catch (Exception e) {
			e.printStackTrace();
			return TaotaoResult.build(500, ExceptionUtil.getStackTrace(e));
		}
		
	}
	
	//通过token获取用户信息
	@RequestMapping("/token/{token}")
	@ResponseBody
	public Object getUser(@PathVariable String token,String callback){
		TaotaoResult result=null;
		try {
			result=userService.getUserByToken(token);
		} catch (Exception e) {
			e.printStackTrace();
			return TaotaoResult.build(500, ExceptionUtil.getStackTrace(e));
		}
		if(!StringUtils.isBlank(callback)){
			MappingJacksonValue mjv=new MappingJacksonValue(result);
			mjv.setJsonpFunction(callback);
			return mjv;
		}else{
			return result;
		}
	}
}
